package com.blq.snblib.util;

import android.util.Log;

/**
 * ================================================
 * 作者: SSNB
 * 日期: 2016/4/23
 * 描述:自定义的日志工具类，可以通过设置Log等级来显示对应Log
 * Log等级
 * 0或小于0:不打印
 * 1:Verbose
 * 2:Verbose,Debug
 * 3:Verbose,Debug,Info
 * 4:Verbose,Debug,Info,Warn
 * 5:Verbose,Debug,Info,Warn,Error
 * 6或大于:打印所有
 * ================================================
 */

public class MLog {
    private static final String TAG = MLog.class.getSimpleName();
    private static int LEVEL = 6;
    private static int V = 1;
    private static int D = 2;
    private static int I = 3;
    private static int W = 4;
    private static int E = 5;

    private MLog(){
        throw new UnsupportedOperationException("不能被初始化");
    }

    /**
     * 设置当前的日志打印等级
     * @param level 打印的最高等级
     */
    public static void setLevel(int level){
        LEVEL = level;
    }

    /**
     * 获取当前日志的最高等级
     * @return 返回日志答应等级
     */
    public static int getLevel(){return LEVEL;}

    /**
     * 直接显示mgs ,tag 为 MLog,等级为Verbose
     * @param msg 显示消息
     */
    public static void v(String msg){
        v(TAG,msg);
    }
    /**
     * 直接显示mgs ,tag 为 MLog,等级为Debug
     * @param msg 显示消息
     */
    public static void d(String msg){
        d(TAG,msg);
    }
    /**
     * 直接显示mgs ,tag 为 MLog,等级为Info
     * @param msg 显示消息
     */
    public static void i(String msg){
        i(TAG,msg);
    }
    /**
     * 直接显示mgs ,tag 为 MLog,等级为Warn
     * @param msg 显示消息
     */
    public static void w(String msg){
        w(TAG,msg);
    }
    /**
     * 直接显示mgs ,tag 为 MLog,等级为Error
     * @param msg 显示消息
     */
    public static void e(String msg){
        e(TAG,msg);
    }

    /**
     * 显示自定义标签和信息,等级为Verbose
     * @param tag 自定义标签
     * @param msg 显示消息
     */
    public static void v(String tag ,String msg){
        msg = isEmpty(msg);
        if(LEVEL>=V){
            Log.v(tag, msg);
        }
    }
    /**
     * 显示自定义标签和信息,等级为Debug
     * @param tag 自定义标签
     * @param msg 显示消息
     */
    public static void d(String tag ,String msg){
        msg = isEmpty(msg);
        if(LEVEL>=D){
            Log.d(tag, msg);
        }
    }
    /**
     * 显示自定义标签和信息,等级为Info
     * @param tag 自定义标签
     * @param msg 显示消息
     */
    public static void i(String tag ,String msg){
        msg = isEmpty(msg);
        if(LEVEL>=I){
            Log.i(tag, msg);
        }
    }
    /**
     * 显示自定义标签和信息,等级为Warn
     * @param tag 自定义标签
     * @param msg 显示消息
     */
    public static void w(String tag ,String msg){
        msg = isEmpty(msg);
        if (LEVEL >= W) {
            Log.w(tag, msg);
        }
    }
    /**
     * 显示自定义标签和信息,等级为Error
     * @param tag 自定义标签
     * @param msg 显示消息
     */
    public static void e(String tag ,String msg){
        msg = isEmpty(msg);
        if (LEVEL >= E) {
            Log.e(tag, msg);
        }
    }

    private static String isEmpty(String msg){

        if(msg==null){
            msg="message is null";
        }else if(msg.isEmpty()){
            msg="message is empty";
        }

        return msg;
    }
}
